/************************************************************************/
/*    Author: Scott Bevin                                               */
/************************************************************************/

#pragma once

namespace XF
{
	class RectangleF
	{
	private:
		float mMinX, mMinY, mMaxX, mMaxY;

	public:
		RectangleF() : mMinX(0.0f), mMinY(0.0f), mMaxX(0.0f), mMaxY(0.0f) {}
		RectangleF(float minX, float minY, float maxX, float maxY) : mMinX(minX), mMinY(minY), mMaxX(maxX), mMaxY(maxY) {}

		bool Contains(const float x, const float y, const float radius)
		{
			return(
				mMinX < x - radius &&
				mMinY < y - radius &&
				mMaxX > x + radius &&
				mMaxY > y + radius);
		}

		bool Intersects(const float x, const float y, const float radius)
		{
			return(
				mMinX < x + radius &&
				mMinY < y + radius &&
				mMaxX > x - radius &&
				mMaxY > y - radius);
		}

		float X(){return mMinX;}
		float Y(){return mMinY;}
		float Width(){return mMaxX - mMinX;}
		float Height(){return mMaxY - mMinY;}
	};
}